From: mjw@wray-m-3.hpl.hp.com Date: Wed, 22 Sep 2004 11:02:20 +0000 (+0000) Subject: bitkeeper revision 1.1159.1.166 (41515bbcO3i2KEUTPMBadmjOSG5Sfw) X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~17400^2~585 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https://%22%22/%22http:/www.example.com/cgi/%22https:/%22%22?a=commitdiff_plain;h=e9bdcef227e67491e82ed8d892372889747bc61b;p=xen.git bitkeeper revision 1.1159.1.166 (41515bbcO3i2KEUTPMBadmjOSG5Sfw) Add some restart events and make migrate/save events consistent with other domain events. --- diff --git a/tools/python/xen/xend/XendDomain.py b/tools/python/xen/xend/XendDomain.py index 8aa33484f1..58b17d2933 100644 --- a/tools/python/xen/xend/XendDomain.py +++ b/tools/python/xen/xend/XendDomain.py @@ -203,7 +203,7 @@ class XendDomain: if info.name: self.domain_by_name[info.name] = info self.sync_domain(info.id) - if notify: eserver.inject('xend.domain.created', [info.name, info.id]) + if notify: eserver.inject('xend.domain.create', [info.name, info.id]) def _delete_domain(self, id, notify=1): """Remove a domain from the tables. @@ -374,6 +374,8 @@ class XendDomain: self._add_domain(dominfo) return dominfo log.info("Restarting domain: id=%s name=%s", dominfo.id, dominfo.name) + eserver.inject("xend.domain.restart", + [dominfo.name, dominfo.id, "begin"]) deferred = dominfo.restart() deferred.addCallback(cbok) return deferred @@ -502,6 +504,8 @@ class XendDomain: self.restarts_by_name[dominfo.name] = dominfo self.restarts_by_id[dominfo.id] = dominfo log.info('Scheduling restart for domain: name=%s id=%s', dominfo.name, dominfo.id) + eserver.inject("xend.domain.restart", + [dominfo.name, dominfo.id, "schedule"]) self.domain_restarts_schedule() def domain_restart_cancel(self, id): @@ -512,6 +516,8 @@ class XendDomain: dominfo = self.restarts_by_id.get(id) or self.restarts_by_name.get(id) if dominfo: log.info('Cancelling restart for domain: name=%s id=%s', dominfo.name, dominfo.id) + eserver.inject("xend.domain.restart", + [dominfo.name, dominfo.id, "cancel"]) dominfo.restart_cancel() del self.restarts_by_id[dominfo.id] del self.restarts_by_name[dominfo.name] @@ -530,16 +536,23 @@ class XendDomain: try: def cbok(dominfo): log.info('Restarted domain name=%s id=%s', dominfo.name, dominfo.id) + eserver.inject("xend.domain.restart", + [dominfo.name, dominfo.id, "success"]) self.domain_unpause(dominfo.id) def cberr(err): log.exception("Delayed exception restarting domain: name=%s id=%s", dominfo.name, dominfo.id) + eserver.inject("xend.domain.restart", + [dominfo.name, dominfo.id, "fail"]) + deferred = self.domain_restart(dominfo) deferred.addCallback(cbok) deferred.addErrback(cberr) except: log.exception("Exception restarting domain: name=%s id=%s", dominfo.name, dominfo.id) + eserver.inject("xend.domain.restart", + [dominfo.name, dominfo.id, "fail"]) if self.domain_restarts_exist(): # Run again later if any restarts remain. self.refresh_schedule(delay=5) @@ -587,7 +600,7 @@ class XendDomain: # Don't forget to cancel restart for it. dominfo = self.domain_lookup(id) xmigrate = XendMigrate.instance() - val = xmigrate.migrate_begin(dominfo.id, dst, live=live) + val = xmigrate.migrate_begin(dominfo, dst, live=live) return val def domain_save(self, id, dst, progress=0): @@ -600,7 +613,7 @@ class XendDomain: """ dominfo = self.domain_lookup(id) xmigrate = XendMigrate.instance() - return xmigrate.save_begin(dominfo.id, dst) + return xmigrate.save_begin(dominfo, dst) def domain_pincpu(self, id, cpu): """Pin a domain to a cpu. diff --git a/tools/python/xen/xend/XendMigrate.py b/tools/python/xen/xend/XendMigrate.py index af99393f85..36929c8b15 100644 --- a/tools/python/xen/xend/XendMigrate.py +++ b/tools/python/xen/xend/XendMigrate.py @@ -260,12 +260,13 @@ class XendMigrateInfo(XfrdInfo): """Representation of a migrate in-progress and its interaction with xfrd. """ - def __init__(self, xid, dom, host, port, live): + def __init__(self, xid, dominfo, host, port, live): XfrdInfo.__init__(self) self.xid = xid + self.dominfo = dominfo self.state = 'begin' self.src_host = socket.gethostname() - self.src_dom = dom + self.src_dom = dominfo.id self.dst_host = host self.dst_port = port self.dst_dom = None @@ -291,7 +292,9 @@ class XendMigrateInfo(XfrdInfo): xfrd.loseConnection() return log.info('Migrate BEGIN: ' + str(self.sxpr())) - eserver.inject('xend.migrate.begin', self.sxpr()) + eserver.inject('xend.domain.migrate', + [ self.dominfo.name, self.dominfo.id, + "begin", self.sxpr() ]) xfrd.request(['xfr.migrate', self.src_dom, vmconfig, @@ -312,22 +315,24 @@ class XendMigrateInfo(XfrdInfo): XfrdInfo.connectionLost(self, reason) if self.state =='ok': log.info('Migrate OK: ' + str(self.sxpr())) - eserver.inject('xend.migrate.ok', self.sxpr()) else: self.state = 'error' self.error(XendError("migrate failed")) log.info('Migrate ERROR: ' + str(self.sxpr())) - eserver.inject('xend.migrate.error', self.sxpr()) + eserver.inject('xend.domain.migrate', + [ self.dominfo.name, self.dominfo.id, + self.state, self.sxpr() ]) class XendSaveInfo(XfrdInfo): """Representation of a save in-progress and its interaction with xfrd. """ - def __init__(self, xid, dom, file): + def __init__(self, xid, dominfo, file): XfrdInfo.__init__(self) self.xid = xid + self.dominfo = dominfo self.state = 'begin' - self.src_dom = dom + self.src_dom = dominfo.id self.file = file self.start = 0 @@ -347,7 +352,9 @@ class XendSaveInfo(XfrdInfo): return print '***request> begin' log.info('Save BEGIN: ' + str(self.sxpr())) - eserver.inject('xend.save.begin', self.sxpr()) + eserver.inject('xend.domain.save', + [self.dominfo.name, self.dominfo.id, + "begin", self.sxpr()]) xfrd.request(['xfr.save', self.src_dom, vmconfig, self.file ]) def xfr_save_ok(self, xfrd, val): @@ -361,12 +368,13 @@ class XendSaveInfo(XfrdInfo): XfrdInfo.connectionLost(self, reason) if self.state =='ok': log.info('Save OK: ' + str(self.sxpr())) - eserver.inject('xend.save.ok', self.sxpr()) else: self.state = 'error' self.error(XendError("save failed")) log.info('Save ERROR: ' + str(self.sxpr())) - eserver.inject('xend.save.error', self.sxpr()) + eserver.inject('xend.domain.save', + [ self.dominfo.name, self.dominfo.id, + self.state, self.sxpr() ]) class XendMigrate: @@ -441,27 +449,27 @@ class XendMigrate: reactor.connectTCP('localhost', XFRD_PORT, xcf) return info.deferred - def migrate_begin(self, dom, host, port=XFRD_PORT, live=0): + def migrate_begin(self, dominfo, host, port=XFRD_PORT, live=0): """Begin to migrate a domain to another host. - @param dom: domain + @param dominfo: domain info @param host: destination host @param port: destination port @return: deferred """ xid = self.nextid() - info = XendMigrateInfo(xid, dom, host, port, live) + info = XendMigrateInfo(xid, dominfo, host, port, live) return self.session_begin(info) - def save_begin(self, dom, file): + def save_begin(self, dominfo, file): """Begin saving a domain to file. - @param dom: domain + @param dominfo: domain info @param file: destination file @return: deferred """ xid = self.nextid() - info = XendSaveInfo(xid, dom, file) + info = XendSaveInfo(xid, dominfo, file) return self.session_begin(info) def instance():